home *** CD-ROM | disk | FTP | other *** search
/ FM Towns: Free Software Collection 4 / FM Towns Free Software Collection 4 - Disc 1.iso / pao / towns / paolib / hc.h < prev    next >
Text File  |  1991-10-18  |  15KB  |  377 lines

  1. /* << 386ASM V2.0 & High C V1.4 >> ********************************************
  2. **
  3. **    パオパオのライブラリ用ヘッダ
  4. **
  5. **    1991.04.13 : CREATE
  6. **    1991.05.11 : FINISH
  7. **
  8. **    < History >
  9. **    1991.04.13 : CREATE
  10. **
  11. **    < note > : TABS = 4
  12. **
  13. **    ☆ 注意 ☆
  14. **      HC.LIBを使用する時は、リンク時に以下の点に気をつけて下さい.
  15. **      (リアルコードとネイティブコードが混在するため. 詳細はDOS-Extenderユーザーズマニュアルを参照)
  16. **    1.  最初にREALHEAD.OBJをリンクすること. (FMC.LIBを使用する時等に必要)
  17. **    2.  HC.LIBは最後にリンクするようにすること.
  18. **        また,次のスイッチをリンク時に指定して下さい. (リアル関係)
  19. **        -realbreak _realend
  20. **        -callbufs 2          ← 2~64の範囲内でアプリで必要な値を設定します.
  21. **        -maxibuf 62          ← これが最適ですが,メモリの空き状況によっては減らし
  22. **                                た方がいいでしょう.
  23. **        -maxreal 2000h       ← この例では,128KBのリアル領域を空けておきます. 
  24. **                                指定値は,アプリで別のリアルプログラムをEXECする場合に
  25. **                                必要な値とします. 通常は,0fffh でいいでしょう.
  26. **  ※  リアルコードとネイティブコードが混在する処理をする時には、上記2点を守って下さい.
  27. **        まぁ、リンク時にエラーにならなければ大丈夫だとは思いますが・・・
  28. **
  29. **    Programmed by Y.Hirata ( Nifty ID : NAB03321 )
  30. ******************************************************************************/
  31.  
  32. #define    TRUE        1
  33. #define    FALSE        0
  34. #define    ERROR        1
  35. #define    NOERROR        0
  36.  
  37. /*-----------------------------------------------------------------------------
  38. **    データ型定義
  39. -----------------------------------------------------------------------------*/
  40. typedef unsigned char    uchar ;
  41. typedef unsigned short    ushort ;
  42. typedef unsigned long    ulong ;
  43. typedef unsigned int    uint ;
  44. typedef signed   char    schar ;
  45. typedef signed   short    sshort ;
  46. typedef signed   long    slong ;
  47. typedef signed   int    sint ;
  48.  
  49. /*-----------------------------------------------------------------------------
  50. **    乱数処理用
  51. **    乱数のマクロを使用する側で、stdio.h, stdlib.h, time.h を include して下さい!
  52. -----------------------------------------------------------------------------*/
  53. #define    RANDINIT        srand((unsigned int)clock())        /*  乱数初期化    */
  54. #define    RANDOM(x)        (rand()%(x))                        /*  乱数 : 0~x    */
  55.  
  56. /*-----------------------------------------------------------------------------
  57. **    マウス処理用
  58. -----------------------------------------------------------------------------*/
  59. #define    MOS_LEFT    1                            /*  マウス左クリック                */
  60. #define    MOS_RIGHT    2                            /*  マウス右クリック                */
  61. #define    MOS_BOTH    3                            /*  マウス左右クリック                */
  62.  
  63. /*-----------------------------------------------------------------------------
  64. **    グラフィック処理用(テキスト処理含む)
  65. -----------------------------------------------------------------------------*/
  66. enum Values_for_ColorNo {
  67.         C_BLACK, C_BLUE, C_RED, C_PURPLE,                    /*  0 -  3    */
  68.         C_GREEN, C_LIGHTBLUE, C_YELLOW, C_WHITE,            /*  4 -  7    */
  69.         C_HBLACK, C_HBLUE, C_HRED, C_HPURPLE,                /*  8 - 11    */
  70.         C_HGREEN, C_HLIGHTBLUE, C_HYELLOW, C_HWHITE            /* 12 - 15    */
  71.     } ;
  72.  
  73. enum Values_for_Write_Mode {
  74.         PSET, PRESET, OR, AND, XOR, NOT, MATTE, PASTEL,        /*  0 ~ 7    */
  75.                                                             /*  8 ~ 15    */
  76.         DUMMY_1, OPAQUE, IMPSET, INPNOT, MASKSET, MASKRESET, MASKNOT
  77.     } ;
  78.  
  79. #define    XCDOT        8                            /*  文字サイズ(x方向)            */
  80. #define    YCDOT        16                            /*  文字サイズ(y方向)            */
  81. #define    MAXLINE        30                            /*  画面枠内最大行数        */
  82. #define    MAXVLINE    32                            /*  描画領域内最大行数        */
  83. #define    MAXCOLM        80                            /*  最大文字数( ANK文字 )    */
  84. #define    MAXVCOLM    128                            /*  描画領域内最大文字数    */
  85.  
  86. #define CRT_CTRL       0x0FDA0                    /*  CRTコントロールレジスタ            */
  87. #define PALETTE_ADDR   0x0FD90                    /*  パレットコードレジスタ            */
  88. #define PALETTE_B_DATA 0x0FD92                    /*  青色パレットデータレジスタ        */
  89. #define PALETTE_R_DATA 0x0FD94                    /*  赤色パレットデータレジスタ        */
  90. #define PALETTE_G_DATA 0x0FD96                    /*  緑色パレットデータレジスタ        */
  91.  
  92. /*-----------------------------------------------------------------------------
  93. **    致命的エラー処理用
  94. -----------------------------------------------------------------------------*/
  95. /*
  96. **    INT24発生時の詳細情報格納用
  97. */
  98. #ifndef _DOSERROR_DEFINED
  99.     struct _DOSERROR {
  100.         short int    exterror ;                    /*  拡張エラーコード                */
  101.         char    class ;                            /*  エラークラス                    */
  102.         char    action ;                        /*  エラー対処                    */
  103.         char    locus ;                            /*  エラー発生場所                */
  104.     } ;
  105.     #define _DOSERROR_DEFINED
  106. #endif
  107. /*
  108. **    INT24復帰時の処理
  109. */
  110. #define    INT24_IGNORE    0                        /*  無視                    */
  111. #define    INT24_RETRY        1                        /*  再試行                    */
  112. #define    INT24_ABORT        2                        /*  プログラム中止                */
  113. #define    INT24_FAIL        3                        /*  ファンクションコール失敗            */
  114.  
  115. /*-----------------------------------------------------------------------------
  116. **    ドライブ種別定義
  117. -----------------------------------------------------------------------------*/
  118. #define    DRV_FD            0x00                    /*  フロッピィディスク                */
  119. #define    DRV_HD            0x02                    /*  ハードディスク                */
  120. #define    DRV_RAM            0x03                    /*  RAMディスク                */
  121. #define    DRV_ROM            0x05                    /*  ROMドライブ                */
  122.  
  123. /*-----------------------------------------------------------------------------
  124. **    デバイス種別定義 (LOW 4bit:ユニット番号)
  125. -----------------------------------------------------------------------------*/
  126. #define    DEV_FD            0x20                    /*  フロッピィディスク                */
  127. #define    DEV_RAM            0x40                    /*  RAMディスク                */
  128. #define    DEV_ROM            0x42                    /*  ROMドライブ                */
  129. #define    DEV_HD            0xB0                    /*  ハードディスク                */
  130. #define    DEV_ERR            0xFF                    /*  ???                        */
  131.  
  132. /*-----------------------------------------------------------------------------
  133. **    ファイル関係用
  134. -----------------------------------------------------------------------------*/
  135. #define YEAR(d)            ((((d) >> 9) & 0x7f) + 80)
  136. #define MONTH(d)        (((d) >> 5) & 0x0f)
  137. #define DATE(d)            ((d) & 0x1f)
  138. #define HOUR(d)            (((d) >> 11) & 0x1f)
  139. #define MINUTE(d)        (((d) >> 5) & 0x3f)
  140. #define SEC(d)            (((d) & 0x1f) * 2)
  141.  
  142. /*  ファイル属性    */
  143. #define DIR_RO            0x0001                    /*  読出専用(書き込み不可)    */
  144. #define DIR_HID            0x0002                    /*  隠しファイル(DIRコマンド不可視)*/
  145. #define DIR_SYS            0x0004                    /*  システムファイル                */
  146. #define DIR_VOL            0x0008                    /*  ボリューム名                */
  147. #define DIR_DIR            0x0010                    /*  サブディレクトリ                */
  148. #define DIR_ARC            0x0020                    /*  アーカイブビット                */
  149.  
  150. /*  ファイル検索情報    */
  151. #ifndef _FIND_T_DEFINED
  152.     struct _find_t {
  153.         char    reserved[21] ;                    /*  MS-DOSが使用            */
  154.         char    attrib ;                        /*  属性                    */
  155.         ushort    wr_time ;                        /*  更新時刻                */
  156.         ushort    wr_date ;                        /*  更新日付                */
  157.         long    size ;                            /*  ファイルサイズ(バイト)            */
  158.         char    name[13] ;                        /*  検索されたファイル名        */
  159.     } ;
  160.     #define _FIND_T_DEFINED
  161. #endif
  162.  
  163. #define    ERRSIZE        -1                        /*  ファイルが見つからない時のサイズ    */
  164.  
  165. /*  ディスク情報        */
  166. #ifndef _DISKFREE_T_DEFINED
  167.     struct _diskfree_t {
  168.         unsigned    total_clusters ;            /*  全クラスタ数                */
  169.         unsigned    avail_clusters ;            /*  使用可能クラスタ数            */
  170.         unsigned    sectors_per_cluster ;        /*  セクタ数/クラスタ                */
  171.         unsigned    bytes_per_sector ;            /*  バイト数/セクタ                */
  172.     };
  173.     #define _DISKFREE_T_DEFINED
  174. #endif
  175.  
  176. /*-----------------------------------------------------------------------------
  177. **    関数プロトタイプ宣言
  178. -----------------------------------------------------------------------------*/
  179.  
  180. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  181. **    < FILE.C >
  182. **    ファイル関係
  183. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  184. unsigned chmod( char *path,unsigned attr ) ;
  185. void getdrive( unsigned *drv ) ;
  186. void setdrive( unsigned drv,unsigned *maxdrv ) ;
  187. int chdir( char *path ) ;
  188. int mkdir( char *path ) ;
  189. int rmdir( char *path ) ;
  190. char *getcwd( char *path,int n ) ;
  191. void setdta( struct _find_t *dta ) ;
  192. unsigned findfirst( char *path,unsigned attr,struct _find_t *dta ) ;
  193. unsigned findnext( struct _find_t *dta ) ;
  194. long filesize( char *path ) ;
  195. unsigned getdiskfree( unsigned drv,struct _diskfree_t *disk ) ;
  196.  
  197. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  198. **    < REALCALL.ASM >
  199. **    High C から REALプロシジャを呼ぶ
  200. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  201. extern RealCall() ;
  202.  
  203. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  204. **    < CTRL.ASM >
  205. **    CONTROLへのパラメタ転送
  206. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  207. extern CTRL_cmdline() ;
  208. extern char CTRL_cmdline_data[] ;
  209.  
  210. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  211. **    < INTR.ASM >
  212. **    割り込みの禁止/解除
  213. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  214. extern _disable() ;
  215. extern _enable() ;
  216.  
  217. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  218. **    < INOUTP.ASM >
  219. **    ポート入出力
  220. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  221. extern unsigned short int inp( unsigned short int port ) ;
  222. extern outp( unsigned short int port,unsigned short int value ) ;
  223.  
  224. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  225. **    < VSYNC.ASM >
  226. **    VSYNC割り込みの登録/解除
  227. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  228. extern int (*VSYNC_entry)() ;
  229. extern VSYNC_init() ;
  230. extern VSYNC_end() ;
  231.  
  232. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  233. **    < VKILL.ASM >
  234. **    TBIOSのVSYNCチェック処理へのパッチ
  235. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  236. extern int VSYNC_KILL_init() ;
  237. extern int VSYNC_KILL_start() ;
  238. extern int VSYNC_KILL_end() ;
  239.  
  240. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  241. **    < SYSINF.ASM >
  242. **    システム(SETUP)情報の取得
  243. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  244. extern int SYS_getinf( unsigned char *sysbuf ) ;
  245. extern int DRV_single() ;
  246.  
  247. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  248. **    < DRV.C >
  249. **    ドライブ情報の取得
  250. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  251. uchar DRV_status( uchar drvno ) ;
  252.  
  253. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  254. **    < POFF.ASM >
  255. **    POFF / REBOOT
  256. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  257. extern poff() ;
  258. extern reboot() ;
  259.  
  260. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  261. **    < SOFTIME.ASM >
  262. **    10us単位でのWAIT
  263. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  264. extern SOFT_timer( unsigned short ) ;
  265.  
  266. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  267. **    < INT24.ASM >
  268. **    致命的エラーの処理用(CTRL+Cマスク設定含む)
  269. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  270. extern INT24errno ;
  271. extern struct _DOSERROR INT24err ;
  272. extern int (*INT24_entry)( unsigned,unsigned ) ;
  273. extern INT24_init() ;
  274.  
  275. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  276. **    < VRAM.ASM >
  277. **    VRAM直接書き込みルーチン
  278. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  279. extern int VRAM_color( int fcol,int bcol ) ;
  280. extern int VRAM_page( int page ) ;
  281. extern int VRAM_putstr( int x,int y,char *str ) ;
  282.  
  283. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  284. **    < GRP.C >
  285. **    グラフィックルーチン
  286. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  287. extern char    *GRPwork ;
  288. extern int    GRPpmode ;
  289. extern int    GRPwmode ;
  290. extern int    GRPfcolor ;
  291. extern int    GRPbcolor ;
  292. extern int    GRPpcolor ;
  293. extern int    GRPmcolor ;
  294. extern int    GRPwpage ;
  295. int GRP_init( char *egbwork,int size ) ;
  296. int GRP_paintMode( int mode ) ;
  297. int GRP_writeMode( int mode ) ;
  298. int GRP_color( int n,int color ) ;
  299. int GRP_writePage( int page ) ;
  300. int GRP_viewport( int x1,int y1,int x2,int y2 ) ;
  301. void GRP_textatr( int t_sp,int f_st ) ;
  302. void GRP_locate( int row,int column ) ;
  303. int GRP_putstr( char *str ) ;
  304. int GRP_printf( char *str,... ) ;
  305. int GRP_get( int x1,int y1,int x2,int y2,unsigned int p,int bpp ) ;
  306. int GRP_put( int x1,int y1,int x2,int y2,unsigned int p,int bpp ) ;
  307. int GRP_line( int x1,int y1,int x2,int y2 ) ;
  308. int GRP_box( int x1,int y1,int x2,int y2 ) ;
  309. int GRP_triangle( int x1,int y1,int x2,int y2,int x3,int y3 ) ;
  310.  
  311. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  312. **    < TEXT.C >
  313. **    テキスト表示ルーチン(16色モード:480line用)
  314. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  315. extern int    TEXTtabs ;
  316. extern char    TEXTcrflg ;
  317. int TEXT_init( char *egbwork,int size ) ;
  318. void TEXT_pos( int *x,int *y ) ;
  319. void TEXT_control( int sw ) ;
  320. void TEXT_color( int col ) ;
  321. void TEXT_backcolor( int col ) ;
  322. void _TEXT_cursor( int x,int y ) ;
  323. void TEXT_cursor( int sw ) ;
  324. void TEXT_locate( int row,int column ) ;
  325. void TEXT_cls( void ) ;
  326. char _TEXT_gets( char *str ) ;
  327. void TEXT_puts( char *str ) ;
  328. void TEXT_scroll( char * ) ;
  329. void TEXT_revscroll( char * ) ;
  330. void _TEXT_cr( int mark ) ;
  331. void TEXT_cr( void ) ;
  332. void TEXT_bs( void ) ;
  333. void TEXT_movecursor( char cursor ) ;
  334. void _TEXT_putc( char c ) ;
  335. void TEXT_putc( char c ) ;
  336. void _TEXT_beep( int time,int count ) ;
  337. void TEXT_beep( void ) ;
  338. void TEXT_linecls( int mode ) ;
  339. void TEXT_escattr( int mode ) ;
  340. void _TEXT_putch( char c ) ;
  341. int TEXT_esc( char c ) ;
  342. void TEXT_putch( char c ) ;
  343. void TEXT_putstr( char *str ) ;
  344. int TEXT_printf( char *str,... ) ;
  345.  
  346. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  347. **    < CONINIT.C >
  348. **    コンソール初期化
  349. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  350. void coninit() ;
  351.  
  352. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  353. **    < KEY.C >
  354. **    キーボード処理( FMC関数ライブラリ使用:link時にFMC関数ライブラリを一緒にリンクすること )
  355. **    キーアドレス等は、"KEY.H" を使用のこと.
  356. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  357. int KEY_test( char *matrix,char keyadrs ) ;
  358. void KEY_make( char keyadrs ) ;
  359. void KEY_break( char keyadrs ) ;
  360. int KEY_hitchk( void ) ;
  361. int KEY_matrix_check( char *matrix ) ;
  362.  
  363. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  364. **    < WAIT.C >
  365. **    時間待ち
  366. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  367. void wait( int sec ) ;
  368.  
  369. /*・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
  370. **    < PAL.C >
  371. **    パレットデータの取得/設定
  372. ・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・*/
  373. void vsyncwait( void ) ;
  374. void getpal( int palno,unsigned char *blue,unsigned char *red,unsigned char *green ) ;
  375. void setpal( int palno,unsigned char blue,unsigned char red,unsigned char green,int sw ) ;
  376.  
  377.